using System;
using System.Collections.Generic;
using System.Text;
using CommonTypes.Math;
namespace BuildingBasicDomain
{

    public interface ILine : ISegment  , IComparer <IPoint> 
    {
        IPoint SNode { get; set;}
        IPoint ENode { get; set;}

        Vector3D Direction { get; }
        Vector3D Perpendicular(IPoint point);
        double Length();
        // TODO : this part must be moved to a library is dificult to implement each time .
        IPoint ProjectionOnLine(IPoint point);
        IPoint IntersectsLine(ILine line, CommonTypes .Geometry .Type_of_Intersection  typeOfIntersection);
        IPoint IntersectsPlane(IPlane plane);
        bool ContainsPointOpen(IPoint point);
        bool ContainsPointClose(IPoint point);
        double DistancePoint(IPoint point);
        double[] getAngles();
        bool IsVertical();
        bool IsHorizontal();
    }

}
